/**
 * 
 */
package rer.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.inject.Named;

import rer.model.Cliente;
import rer.persistencia.ClienteDAO;

/**
 * @author Henrique Serrat
 * @since 15/11/2014
 *
 */

@Named("clienteBean")
@RequestScoped
public class ClienteBean implements Serializable{

	/**
	 * 
	 */

	
	private static final long serialVersionUID = -7207152583918640916L;
	private ClienteDAO clienteDAO;
	private Cliente cliente;
	private List<SelectItem> sexo;
	
	
	public ClienteBean(){
		
		clienteDAO = new ClienteDAO();
		cliente = new Cliente();
	
	}
	
	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	
	public String cadastrar(){
		
		FacesContext context = FacesContext.getCurrentInstance();

		if(clienteDAO.cadastrar(cliente) == true){
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Cliente cadastrdo com sucesso",""));
		}else{
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Cliente nao foi cadastrado",""));
		}
		
		return "cadastrar-aluno";
	}


	public String editar(Integer codigo) {
		
		cliente = clienteDAO.pesquisaCliente(codigo);
				
		return "editar-cliente";

	}



	public String deletar(int id) {
		
		FacesContext context = FacesContext.getCurrentInstance();
		
		if(clienteDAO.deletar(id) == true){
			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Cliente deletado com sucesso", ""));
		}else{
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Cliente nao foi deletado", ""));
		}
	
		
		return("listar-clientes");

	}


	public List<Cliente> listar() {
		return clienteDAO.listar();
	}


	public List<SelectItem> getSexo() {

		if (this.sexo == null) {

			this.sexo = new ArrayList<SelectItem>();

			this.sexo.add(new SelectItem(new Character('M'), "Masculino"));

			this.sexo.add(new SelectItem(new Character('F'), "Feminino"));
		}

		return sexo;
	}
	
	
	// Salvar edi��o do Cliente.
	
	/**
	 * @param id
	 * @return
	 * @see rer.persistencia.ClienteDAO#pesquisaCliente(java.lang.Integer)
	 */
	public Cliente pesquisaCliente(Integer id) {
		return clienteDAO.pesquisaCliente(id);
	}

	
	
	public String salvarEdicao(){
		
		FacesContext context = FacesContext.getCurrentInstance();
		
		if(clienteDAO.editar(cliente)){

			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Cliente atualizado com sucesso", ""));
			
		}else {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Cliente nao foi atualizado", ""));
		}
		
		return "listar-clientes";
	}
	public String detalhes(int id){

		cliente = clienteDAO.pesquisaCliente(id);
		
		return "detalhes-cliente";
	}
}
